﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioSituacaoTramite
    {
        private IRepositorioSituacaoTramite _repositorioSituacaoTramite;

        /// <summary>
        /// 
        /// </summary>
        public NegocioSituacaoTramite()
        {
            _repositorioSituacaoTramite = new RepositorioSituacaoTramite();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="situacaoTramite"></param>
        /// <returns></returns>
        public SituacaoTramite Inserir(SituacaoTramite situacaoTramite)
        {
            situacaoTramite.Codigo = GeradorCodigo.GerarCodigo(1);
            situacaoTramite.Codigo += (_repositorioSituacaoTramite.ObterUltimoIdCodigoInteiro() + 1).ToString();
            situacaoTramite.Codigo += GeradorCodigo.GerarCodigo(1, situacaoTramite.Codigo);
            return _repositorioSituacaoTramite.Inserir(situacaoTramite);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="situacaoTramite"></param>
        /// <returns></returns>
        public SituacaoTramite Atualizar(SituacaoTramite situacaoTramite)
        {
            return _repositorioSituacaoTramite.Atualizar(situacaoTramite);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="situacaoTramite"></param>
        public void Excluir(SituacaoTramite situacaoTramite)
        {
            SituacaoTramite situacaoTramiteTmp = ObterPorId(situacaoTramite.SituacaoTramiteId);
            _repositorioSituacaoTramite.Excluir(situacaoTramiteTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<SituacaoTramite> ObterTodos()
        {
            return _repositorioSituacaoTramite.ObterTodos();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public SituacaoTramite ObterPorId(int id)
        {
            return _repositorioSituacaoTramite.ObterPorId(id);
        }

        public SituacaoTramite ObterPorCodigo(string codigo, Usuario usuarioPermissao)
        {
            return _repositorioSituacaoTramite.ObterPorCodigo(codigo);
        }
    }
}